/*
    静态数组的使用

        1. 数组的定义       array<int, 5> myarr{0};
        2. 数组的遍历       for (int i = 0; i < size; i++)
        3. 数组的排序       sort(arr, arr + size);
        4. 一次性赋值       myarr.fill(100);
        5. 数组的交换       myarr.swap(myarr2);
        6. 数组的迭代器     for (array<int, 5>::iterator it = myarr.begin(); it != myarr.end(); it++)
*/


#include <iostream>
#include <array>
#include <algorithm>
using namespace std;

int main()
{
    array<int, 5> myarr{1,8,3,6,9};
    int size = myarr.size();

    // for (int i = 0; i < size; i++)
    // {
    //     cin>>myarr.at(i); // 使用at方法访问数组元素
    // }

    for (int i = 0; i < size; i++)
    {
        cout<<myarr.at(i)<<" "; // 使用at方法访问数组元素
    }
    cout<<endl;

    // 输入数组的最后一个元素
    cout<<"请输入数组的最后一个元素:"<<endl;
    cin>>myarr.back();

    // 打印数组元素
    for (int i = 0; i < size; i++)
    {
        cout<<myarr.at(i)<<" "; // 使用at方法访问数组元素
    }
    cout<<endl;


    // 获取首元素地址进行解引用修改
    // 是否修改首元素
    cout<<"是否修改首元素?1.是 2.否"<<endl;
    int choice;
    cin>>choice;
    if (choice == 1)
    {
        *(myarr.data()) = 22;
    }
    cout<<"修改后的首元素为:"<<myarr.at(0)<<endl;

    // 打印数组元素
    for (int i = 0; i < size; i++)
    {
        cout<<myarr.at(i)<<" "; // 使用at方法访问数组元素
    }
    cout<<endl;

    // //一次性全部赋值为100
    // myarr.fill(100);

    // // 打印数组元素
    // for (int i = 0; i < size; i++)
    // {
    //     cout<<myarr.at(i)<<" "; // 使用at方法访问数组元素
    // }
    // cout<<endl;

    // array<int, 5> myarr2{1, 2, 3, 4, 5};

    // myarr.swap(myarr2); // 交换数组元素

    // // 打印数组元素
    // for (int i = 0; i < size; i++)
    // {
    //     cout<<myarr.at(i)<<" "; // 使用at方法访问数组元素
    // }
    // cout<<endl;

    //正向迭代器
    for (array<int, 5>::iterator it = myarr.begin(); it != myarr.end(); it++)
    {
        cout<<*it<<" ";
    }
    cout<<endl;

    // 反向迭代器
    for (array<int, 5>::reverse_iterator it = myarr.rbegin(); it != myarr.rend(); it++)
    {
        cout<<*it<<" ";
    }
    cout<<endl;


    // 排序
    sort(myarr.begin(), myarr.end());

    // 打印数组元素
    for (int i = 0; i < size; i++)
    {
        cout<<myarr.at(i)<<" "; // 使用at方法访问数组元素
    }
    cout<<endl;

}